{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "8eb05d5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "229312de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>id</th>\n",
       "      <th>type</th>\n",
       "      <th>temperature</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.31</td>\n",
       "      <td>0.039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>10.35</td>\n",
       "      <td>0.384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1.65</td>\n",
       "      <td>0.986</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1.70</td>\n",
       "      <td>0.706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>11.53</td>\n",
       "      <td>0.304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312353</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>494</td>\n",
       "      <td>0</td>\n",
       "      <td>9.52</td>\n",
       "      <td>1.800</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312354</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>495</td>\n",
       "      <td>0</td>\n",
       "      <td>7.12</td>\n",
       "      <td>0.038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312355</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>496</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.322</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312356</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>497</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312357</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>498</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.469</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4312358 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "               date   id  type  temperature  target\n",
       "0        2019010100    0     0        10.31   0.039\n",
       "1        2019010100    1     0        10.35   0.384\n",
       "2        2019010100    2     1         1.65   0.986\n",
       "3        2019010100    3     0         1.70   0.706\n",
       "4        2019010100    4     0        11.53   0.304\n",
       "...             ...  ...   ...          ...     ...\n",
       "4312353  2019122623  494     0         9.52   1.800\n",
       "4312354  2019122623  495     0         7.12   0.038\n",
       "4312355  2019122623  496    44         8.08   0.322\n",
       "4312356  2019122623  497    44         8.08   0.409\n",
       "4312357  2019122623  498    44         8.08   0.469\n",
       "\n",
       "[4312358 rows x 5 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv('data/train.csv')\n",
    "test = pd.read_csv('data/test.csv')\n",
    "train"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2dcc15d1",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# 任务1：时序数据分析"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40d383bc",
   "metadata": {
    "hidden": true
   },
   "source": [
    "target 分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a6d33476",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.25     0.071\n",
       "0.50     0.212\n",
       "0.75     0.648\n",
       "0.90     1.899\n",
       "0.95     3.309\n",
       "0.99    23.000\n",
       "Name: target, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['target'].quantile(q=[0.25,0.5,0.75,0.9,0.95,0.99])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be775660",
   "metadata": {
    "hidden": true
   },
   "source": [
    "type分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "13216b25",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: 2169142, 8: 544446, 44: 319754, 66: 120988, 38: 69136, 40: 60494, 27: 60494, 59: 51852, 4: 43210, 15: 43210, 17: 34568, 42: 25926, 37: 25926, 32: 25926, 28: 25926, 19: 25926, 18: 25926, 67: 25926, 10: 25926, 3: 25926, 33: 17284, 30: 17284, 46: 17284, 45: 17284, 5: 17284, 41: 17284, 7: 17284, 55: 17284, 36: 17284, 58: 17284, 50: 17284, 29: 17284, 2: 17284, 13: 17284, 22: 17284, 62: 17284, 60: 17284, 53: 8642, 51: 8642, 65: 8642, 52: 8642, 63: 8642, 64: 8642, 54: 8642, 61: 8642, 56: 8642, 57: 8642, 49: 8642, 16: 8642, 43: 8642, 48: 8642, 47: 8642, 20: 8642, 21: 8642, 23: 8642, 24: 8642, 25: 8642, 26: 8642, 12: 8642, 31: 8642, 11: 8642, 1: 8642, 35: 8642, 9: 8642, 39: 8642, 6: 8642, 14: 8642, 34: 8642}\n"
     ]
    }
   ],
   "source": [
    "print(dict(train['type'].value_counts()))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b61c355c",
   "metadata": {
    "hidden": true
   },
   "source": [
    "客户分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "9a2640a6",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEFCAYAAADzHRw3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAmfElEQVR4nO3deZgcZbk28PuZyWQhRLYMEhNgOJxEFAyiY9i8NLJIWI4cEc8nnAOX6GcEUfEcjp9BZFFEogeQJZAYCISgEPAQQiQ7ZN8zM1knkz2TWbLMktn3nnm+P7oTejq9VHdXddVbc/9yzZXpruqqZ7qrn3rrrXcRVQUREZkvy+0AiIjIHkzoREQ+wYROROQTTOhERD7BhE5E5BP93Nrx0KFDNS8vz63dExEZqbCwsEZVc6Mtcy2h5+XloaCgwK3dExEZSUQOxlrGKhciIp9gQici8gkmdCIin2BCJyLyCSZ0IiKfYEInIvIJJnQiIp9gQicy2N6qZqzdV+t2GOQRrnUsIqL0XffscgBA6cSbXY6EvIAldCIin2BCJyLyCSZ0IiKfYEInorS0dAQwd+tht8MgMKFbMnXFPqzZV+N2GESe9NCsbbj/rSLsONTodih9Hlu5WPCHeTsBsCUBUTSV9W0AgNbOgMuREEvoREQ+wYROROQTCRO6iAwUkQ0iskVEikXkt1HWERF5QUT2ishWEfmSM+ESkVep2wGQpTr0DgDXqGqziOQAWCUi81V1Xdg6NwIYGfq5HMDk0P9ERJQhCUvoGtQcepgT+ok8Gd8KYEZo3XUATheRYfaGSkReJm4HQNbq0EUkW0Q2A6gCsFhV10esMhxAedjjitBzkdsZLyIFIlJQXV2dYshERBSNpYSuqt2q+kUAIwCMEZFLIlaJdnI+qUpNVaeqar6q5ufm5iYdLBG577f/KMY//3reSc+zDt19SbVyUdV6AMsAjItYVAHg3LDHIwAcSicwIvKm11eXItDzSfpmVYt3WGnlkisip4d+HwTgOgA7I1abA+DuUGuXKwA0qCr7AhP1ASyZe4eVVi7DALwhItkIngDeVdUPReReAFDVKQDmAbgJwF4ArQDucSheIvIoltTdlzChq+pWAJdFeX5K2O8K4H57QyMik7Ck7j72FCWitLBk7h1M6EREPsGETkRpYVWLdzChExH5BBM6EaWFdejewYROROQTTOhERD7BhE5E5BNM6EREPsGETkTkE0zoREQ+wYRORLZQ9jByHRM6EZFPMKETkS2EPYxcx4ROROQTTOhEZAvWobuPCZ2I0sKqFu9gQieitLBk7h1M6ERkC5bU3ceETkTkE0zoRGQLVr24jwmdiNLCqhbvSJjQReRcEVkqIiUiUiwiD0RZZ6yINIjI5tDPo86ES0Rew5K5d/SzsE4AwIOqWiQiQwAUishiVd0Rsd5KVb3F/hCJyAQsqbsvYQldVQ+ralHo9yYAJQCGOx0YEQF7q5rxhccWorK+ze1QEmJJ3X1J1aGLSB6AywCsj7L4ShHZIiLzReRiO4Ij6utmbihDU0cA87YedjuUmFgy9w7LCV1ETgXwHoBfqGpjxOIiAOer6qUAXgQwO8Y2xotIgYgUVFdXpxhyZt328uqYy5buqkJpTUsGoyEiis1SQheRHAST+d9UdVbkclVtVNXm0O/zAOSIyNAo601V1XxVzc/NzU0z9MwoKquPueye1zdi7NPLMhYLkRexqsU7rLRyEQDTAJSo6rMx1jkntB5EZExou7V2BkrUFzFXUjKstHK5GsBdALaJyObQc78GcB4AqOoUALcDuE9EAgDaAHxPledtIrt4uZ7ay7H1NQkTuqquAhD3I1PVSQAm2RUUEREljz1FiTyM17mUDCZ0yqglO4+ivavb7TCIfIkJnTJma0U9fjC9AL/7MLKTMcXC+mlKBhN6FCWHG5E3YS7W7bfeUKemuQOFB485GJX5Gtq6AABlta0uR2IOVrlQMpjQo1i9twYAsKj4qOXXfOvFVfjO5LVOhURElBATuk0ONbS7HQKRq9hS2X1M6EREPsGETq7rCHTjD/NK0NwRcDsUz1GD+ooK7+C6jgmdXPfuxnJMXbEfz3+02+1QiGwV6O7JaDNdJnRyXVe39vqfPiHxO2l7iql16F3dPdhSXu/Itu+ZvhEXPbLAkW1Hw4TuouaOAG55cSV2HokcjdifDP2+99LcEUBTe1fG9hdZ5VLV1I5tFQ0Z278VJp10ovnj/J249aXV2H20yfZtr9xTY/s242FCd9GavTXYXtmIpxf2raoGk6taL3lsIb7w+KKM7/d4/fQ3/7wC/zJpVcb3H49J9fzRbD8UPEHWNHe4HEn6mNCJDFLfmrmrg2Txpqj7rAyfS0Qu8XI1VVFZHW57eQ2yQnnc1Dp0P2EJncgAXiz7rtgdnEayx4d5vLSmBT0G/mFM6EQGcDq1HGlox8ZSjkUEALuONGHs08swefk+t0NJGhO6J5hXEkgHr8y95/o/L8d3p3AsIgCorA8OHldg4AmOCd1FvIlEVjl9pDS1s5euHzChh+w60oR91c1uh9En+PE8VtXUjqrGzA3QNm3VAU4UQidhK5eQG55bAQAonXizy5GQicY8+TGAzB0/T3y4A9VN5reb9hQfVAWyhE7kYdPXlMZcFt5j9aFZ23DVUx9nICL/Mb2naziW0JPU1tmN1s4Azjp1gG3b/KikCu1d3RiYk23bNslfElVTvb2hLDOBkKf12RL6qN/Mx4sf70n6dd9+eTW+/PuPbIkh/Dv6yor9tmyT/IktgzLPxLc8YUIXkXNFZKmIlIhIsYg8EGUdEZEXRGSviGwVkS85E659OgM9eGZx8mOo7Dxi3wA+4QdMe4A3uMjbGtu7UHLY7IHkov0NkWPRmFwFY6XKJQDgQVUtEpEhAApFZLGqhk/dfiOAkaGfywFMDv1PlJKdRxox/PRBGDIwx+1QPCFalUumS5B3T9uAzQ4NM5spd726HlsqGqLfvDY3j5+QsISuqodVtSj0exOAEgDDI1a7FcAMDVoH4HQRGWZ7tDFsr2zA3K2HM7U7SlEyCWjccytx92sbHIuFkmd6MgeALR4bethuSdWhi0gegMsArI9YNBxAedjjCpyc9CEi40WkQEQKqqurkww1tlteXIX73yqybXvp6u5RLNtVxcGKLIr1Lm0qq89kGMbxQYGSbGY5oYvIqQDeA/ALVY2sSIt2bJ30PVXVqaqar6r5ubm5yUUaRU8ocUbTGehBXUtn2vtIxdQV+/H91zdizpZDONzQFnO98DeNuZ/iYfImKywldBHJQTCZ/01VZ0VZpQLAuWGPRwA4lH548f1tQxm+//rGqMt+NKMAlz2x2OkQoio7FhwL4oGZm3HlU0tcicEkTFbkCT4oVFlp5SIApgEoUdVnY6w2B8DdodYuVwBoUFXHK7UrQokzmuW77avSSdfvP9yBQ/VtaOtkSxZKjQ9yjWfFatWybFe1ccMrWCmhXw3gLgDXiMjm0M9NInKviNwbWmcegP0A9gJ4BcBPnAnXTK+uOoCrJi7B91/nTb5omKxS47X3zWvx2GHpzuhVul6VsNmiqq5CgqtiDd79u9+uoKwy7QBaf8C84TjtFHkQPfbBdow6Z4grsZiG1VJkhS97ih6oaXE7hKS9vGwf8ibMdTuMjHpj7UE8/P52JiufMOlz7Ah0o7E9c/Ozdmdo9iNfJvT/enez2yFY4sdhZOMx7YrK6/rY4WOru6ZtwOjHF2Vsfx0Z6gludEK3o513cwcH9ncbE31iJkyGYtLnuMFi9acBb3svhif09Lfx61nb0t9Iivze9ry0pgW/fn9b0peb7JBlDd8limR0QrfDnC2H0GKxlG7iLOBu+vnMTXhrfRm2V8bvbm1YIcgz3lpv/5C572y0vk2/nHcjB+cymdEJPdrH0NDWlfSBZnUs6WmrDiS3YQLAkqRJfvWee1esniExH3ierya4ONzQ5mjPTLvnHDWtfi5Zqf55fin5+Z1fjl+Th8uNZHQJPdKh+sxN0kvWsU6c+rpMfQWMTuh2vUnr9tdmdH99hl+KcB7At5KsMDuh21Q7+1GJWd17TXP8U7JaUud5k/wmUydkoxO6H33tT0sBBIf/3VpR724wDknU6qUvUVVLfSEe/aAYXd09GYgIeGNNKYoPJf6M2rsyEw8AfLC5ElVNrFJNxFcJ3e6z4Nxtzo4AHC3e40PvPvHhDnxr0uqUhjEoq23FxY8u8OwQCHWtXb1iW7D9iIvRZE5Pj6K1s3fyfn11KS55bCEq62OPm39ca0dmehs+NqcYN7+wKuF65XW9Rzu976+FjsRT19KJB2Zuxj0xhsr2kprmDhxzaR4GwPCE7nSd9tHGDmd3EMfWUCm2vjX5g2P25kq0dHZjVlGF3WElJd75Nfzv2lDaNwYt++PCnfj8owt79XtYUBw8mZXHGQraqyKnfaxrdWZslECo/8fRxsyX0JMtJOb//iN8yaV5GADDE3okL5T0Gtu70GHjGMqr9tRgxtpS27bnhmRPvH5tFTOrqBIALHdkc9p7hRXImzDXE98bN1U3Bwtud74aObMm8HHJ0aQ6W8XCVi4pmLpif9Tnu3sUb60vS7sO0spN2NGPL8KsTZVp7SfcM4t349EPim3bXiZFlm5MGI/ELVa+8B3d9la5PPj3LQCASUv32LpduznZk/PjkqPYWxW7f8m7BRUpdbbq6u5xpCdvIr7qWBTLOxvL8ev3t6GhrQv3jb3Q7XCsSeOU7r0C7skB+TW5t3d1Y2BOdq/n1uytwZ2vrkd2Vvy/+aFZ2zB6xGm4Y8x5+MbTy3DB0MG9lo958mPb4zWL/cfM5vJ627cJBAuX/7NwlyPbjsfYEnpPj2L6mlJL6za0Bev26tvcu1lxXCZvmJiaMj13PkrCRY8swKGIG5yvrAxeOcYbpEwkOATFQ6HB4g7UtGCJYbPl+J2qYuWeaktVgpET1LPZYgLd3iuGWvKlJxajpjn5m637q5uNHer3j/N34Zd/35Jy3fiBmhZ8sNm+aiynlaVwg9PQw7lPmbmxHHdN24APNjvb+i0dxib0VL2xphT5v3fvLjRgsZQecUq/5pnluGvayTdtvOz4X7Ch9Bj+XlgRdZkVN/x5BR6YudmusFzH3J0kB9+wZI7D4ydqK01M3dLnEvpjc4pR0+x+1UtCUYpsm8rqo666eMdR5E2Yi3HPrfBFC5HIP6EzQx1qqLdMdWTyGlOrKoE+kNBVFUVldaEH6W4r/XicMDtUHbHzSJOnkl/kjc/vh3UM8ek90aQFPPR5RRr58HzXm1i2dATQEfDuexRL5PGdqdzRJ1q5LN5x1O0QyAd2HWmyfZtFMa66vKKhrQuDB7iXJi5+bCFO6Z+deEUCYKGELiKviUiViGyPsXysiDSIyObQz6P2h5m6TJwZx/7P0pRe56dxmO3k1RlkbnhuhdshZFx9a9dJrXYyrbXTwSEPMnSp+PrqA/i4xPmCpZVT73QAkwDMiLPOSlW9xZaILHI7FX775dUnfi+tTa5Vg9OxeyEhdgZ6UHiwzu0wXOH2sXncvupmfGpgDnKHDEh5Gze9sBIAUDrxZrvCSpnJ1XRPL9oNwPn3MWEJXVVXADB2sI3w1GZnXVysG5RW2J5uY23QxW/AX5bvs2U7Vmdn9zK3Tq/XPrMcVz7VNzsjHapvQ2N7F0oONzq2j6snLsFjH0StuMArK92ZrtKum6JXisgWEZkvIhfHWklExotIgYgUVFdX27Rr66x2RKL0HWqwZyClf/vLWlu2k6r2rm50JlkQcP/66BMBmyY2N+k+1PbKBlw1cQlGP74INz6/8sTzK3bbm3Mq69vwxtqDtm4zXXYk9CIA56vqpQBeBDA71oqqOlVV81U1Pzc3N62dWj1M7WzGl8kvalL78tilaKC7J+HE2/HuHyTzkTW0dYUGmDqceOUUXPTIAlz77LKTnv97Qbkj+/OqJ+fucDsEy2LN/bvR4qieJg9LkXZCV9VGVW0O/T4PQI6IDE07sr7A3OMmLrtKhVbsD315Jy+PPjCbHcqPnXxT8M111kpmLR0BSycoL9z3iCfZ+0QmM7kvR9rtkUTkHABHVVVFZAyCJwlrk3Sms1+L65n70SQ2ffUBXHHhWW6HQRGOH5t1LZ24LMrY2AbnC9/xW5kqYUIXkbcBjAUwVEQqADwGIAcAVHUKgNsB3CciAQBtAL6nBp/iqps60ONw+CcOojR38/g/gpfBN48elt6GXOD2Ve3sTZX42qhcnDm4v6X18ybM7fXYyiFS2+LeBCnJ2F7p3I1DN5hcZZKuhAldVe9IsHwSgs0afeErT36E/v1834HWdlVN7dhw4BhuGf0ZFJR6u7liZX0bfvHOZlx+wZl458dXuh2O4+pbO/HqygP4z+tHJRzC18vMjTxzfN9TNJXCdqxWDYuK7ZnZxenLFzeuj+6etgE7jzTh66NyM1oyTeVPPf75Oj2lmVeuU3/3jx2YtakSlww/DeMuOQdlta0xbxya7MOth9CjsRN/tOdTLcw7NY56unyf0O3U2G7fuBZlta04WOvsJM6ZLNEc703YY7GF38/e3hRzWSqJMNOlNys3MW+bvCYDkSTWFpoS8fh47GOfXooM3rfOmJ++FTymXrzjMsuv6Unhjfhgc6Urk1dY4fuE7tXWA19LcbgAE1hJyAdqnD2Zuel4HW6TjQUAO/kxmafqhSV7T3ouUR38vmrvHrusLHaBldJkOpfrbn5fNfTPBOlEGe9GYrptAuwegXF+H5sEOlY+NuOoTI//S+h94FOsrHN/wP3wUk2mBh37zuQ1J8aLSeZj9vrNtUlLTy41knVOf+djnbALLHZccpKxJXQ/5+m1+2qxrbIh6rKOQLA+NPymVvgNmmW7qj2fsBKxWsL36+Bfz320J+XXtnd1Y8lOc7rpZ5LT34vbp7g7TAXQB0roJrrjlXUxl332NwuQd9YpMXvu/fjNQjxw7UinQvMsE09iTe1dtm/z8TnFmLmxHB/+7KsnLesrzbMj/866lk7k2NgU2cv3IIwtoZss3eMhUTdsDx9vcU1fU5py/bFXm5HF8/Pwlj42fWiloZZTjQ6cLNyW6gnpsicW48o/9I1RJ1lC9zETS2Sd3T3G3/dI1EpicclRXHHBmdhT5b+24F4Q7R5OU5pT6d30/ErscHAoXrswobvAwDyblHRauZiezK14ZHZwDO0RZwxyORJ/evwfxWm9Ptr3M14yf3nZXnzz859Oa592YZUL2aq0thW7jzpT8sybMBcz1pY6su1oCg8mbrWwtaIe3/zz8gxEkyRDT4w9PYoZa0vR3pX6tHPVTTF6Klu8ZE32rfvTgl34zmT3b4gCfSChL7Spuz5Z868vrcbkZenNVhTvC/XUvJ1pbTsZVr6kE+fvTPkE5sTViOnz1C7acQSPflCMPy2wvyfme4UVtm/zuHROQHbyfUJ/YOZmt0PoEzJdX3+8+Sb5S3NH8HOtb+u0fduVLk92nQm+T+jkT+NnFKa9DT/X15fXmTkhhcEjb3uCsQmdn7t/xftSH7/hujyN+SEjryY6At349surUXjwGN4tKLdtgms3rN0fnFvmV+9tczmS9ESrOopXnfRf7252MJrEvNKijK1cfKit05uDQnlNe1c3FhUfwbGWTmwqq8fD72/HziNNAIAff/1CS9vwyhfZChNCTbWcNquo0tY4TMWE7kOvrDwAILM3yOpbzevIUtXUgfFvpl91Q/Zz60RZ1dSONftq3Nm5DZjQXTDFwQmNKTFW13mYy5/NmCfN7lFqbB26yd4rcq75lOkUqX+n61rsbxnhpPBWFzzH9Gbn7EJ9CRM6ecr6/bVYvz92h572rh7c9vLqqMse+WC7pX04nRheWbkf97y+IanXlBjQrdxtXr6y8kr7f1a5kKf88I2ChOsUldVHfb69y96JIVK1eEfyw9durYg+XHJfFjng2hGH54D1A5bQyTe2xxhDnswRPg7Qv74U/UqMYmNCJ9+wswR31Ielwfv+VoSqJjP+rmSqxToD7l+ZeaV+P2FCF5HXRKRKRKJWUErQCyKyV0S2isiX7A/zZD1erlAjT7NS31lhsaflzsNN6YYDAJiz5ZAt20nkzbUHM7KfVKXytf7Ve1vtD8RQVkro0wGMi7P8RgAjQz/jAUxOP6zE5m49nIndGM0rpQYT/WB64rr8pbuqUGtYyxpTJHOT8aMSc6bcc3pog4QJXVVXAIg3juitAGZo0DoAp4vIMLsCjKXDA5dZ5F8NbYk7Sh2obslAJPby+oVtovCifS4mlVucfv/tqEMfDqA87HFF6LmTiMh4ESkQkYLq6tTH4ghuK62Xk01UFe9v8ke7+mS/bNNWHXAmEIr5/X5o1snVK4lmiMqE1k5vjP5pR0KP9m5G/Wqo6lRVzVfV/NzcXBt2TW5bWHwU//nOFrfDcIWJw7Fuqah3O4S0zNt2BJ97ZEGv5zyQzy1z+gLJjoReAeDcsMcjAGTmDg+5rsGBcavJOSv3mDtOyXFtEZNJGJTPHWdHQp8D4O5Qa5crADSoquN3LPkhEvnP8WqvmRvL46+IYAeu0poWT1S5WOX0TdGEPUVF5G0AYwEMFZEKAI8ByAkFNwXAPAA3AdgLoBXAPU4FS97j9Zts5F8/mhFsiXTW4P4uR+IdCRO6qt6RYLkCuN+2iMg25pRbiFJnVAnd4e0b21PUoM+QDBFZN0tmMCkXmNBskcgosRJA2TEz5+Hsi8Lrog3K545jQici47SEtfs2qoTucKULEzoRGWf30U/G0MkyKKO3OdwBiQmd+pzGdvPmP6XeTK1ymbRkr6PbNzahe2WGEPKWLRGTIkTD0fnM1x02lJNJrVycHoPK2IRO3uC1ZuhWBtXac7Q5A5GQkzh8dnRM6D5mUMHFNlYmO+BIneYLz+cmHee8KRqD028MWeO171JnN5N1XxBeh15RZ94gaU7hJNGUFq+dVgM9sSNSVfx+bkkGo6FkWS2oxfmY+zRjS+hEyapp7uQY5j7BK/TojE3obOVC5D0tHYGM7Icl9OiMTeg8Q1M0Tg9PSvE9+G56k5088eEOS+vxc47O3ITOz9MT+DlQuD1VTYlXiqO9y9pNbTZbjM7YhE6ULJOat5kqU518fjC9ICP7MY2xCZ3n58Qy8eVikiSyjsPnEpExeH53l7EJnQeON3itKjNePDxmyO+MTegeyyOe1BdbAsRr/dT33g3qa4xN6JSYSaPQEVH6mNB9rC+W0OPh6c15LEPEx0miKWWZyOcHajgULX2CPbjdZSmhi8g4EdklIntFZEKU5WNFpEFENod+HrU/1N5Y+PSGV1Z6a2yUeMcFDxnyu4SjLYpINoCXAFwPoALARhGZo6qRfXRXquotDsRIKeqLCSxeQv/DPI606DRWucTnhXboYwDsVdX9qtoJYCaAW50Ni8h+s4oq3Q7B97o5aparrCT04QDKwx5XhJ6LdKWIbBGR+SJycbQNich4ESkQkYLq6uoUwv0EB+eiaHhUuGtPlfV7Km2d3Wjv6nYwGm/aeaTRsROflYQe7SIqMpoiAOer6qUAXgQwO9qGVHWqquaran5ubm5SgVLynl28O63Xt3d1o6qp3aZoiHr73KMLMObJj9wOI6N2HmnEuOdW4oWP9ziyfSsJvQLAuWGPRwA4FL6CqjaqanPo93kAckRkqG1RRlHV2OHk5n3vV/+7Fff9tfDE4y3l9cibMBeTlnxyoI1/sxBjnvy41+u6exRN7YknYiYCgH3Vzahuiv1dbWzPzPjpXrGprB4AsKWi3pHtW0noGwGMFJELRKQ/gO8BmBO+goicI6FeLCIyJrTdWruDDfe8Q2c4P1NV3D55DRYWH8E7BeWYv/3IiWVLd1UBAJ5e9EmpfsXuk6vFHn5/G77w+CLP1pUev4TfUl6Pe98s9Gycfpc3YS7yJszFtc8sxxVP9S4U/HnxbhSV1bkUmb8lbOWiqgER+SmAhQCyAbymqsUicm9o+RQAtwO4T0QCANoAfE/Zq8Uzrn92Ofr3y8Ls+69GwcE6FLxZGHf9NftqMHrE6VGX/W9hBYDgeNQ7KhrtDjVtv5m9Hf9xxfm4/60iVNS14d2CcgzKycZVF57ldmh9Rt6Eub0eR55Un/94T68C2YLtR/C5YUNw/lmDMxKfn1maJDpUjTIv4rkpYb9PAjDJ3tDIDuFfrpEPzz9p+Tsby/B/vnIeyo61nnjuzlfWJ9zu7qNN+JdJq+wJ0mbhf/NDs7a5GAkdt7+6GdsqG6J+Hvf+tRD9s7Ow8TfXuRCZO5wq7opbBen8/HwtKEh+kPryY63491fX90pA5LwND1+L5vYArnlmuduhEBnv66Ny8cYPxqT0WhEpVNX8aMssldC9ZNqqA0zmLoi8OUpE3mPcWC6smici0zmVxYxL6BwSlogoOuMSehYTOhFRVMYldOZzIjKdU1XHxiX0LCZ0IqKoDEzozOhERNEYl9A5IQoRUXTGJXSW0ImIojMwobsdARGRNxmY0JnRichsJYebHNmucQmd6ZyITNfW6cw48OYldJbQiYiiMi6hs8qFiEzn1LwrxiV05nMiMp1Tk9wbl9DZyoWITOfUoLHGJXTWoROR6ZjQQ1iHTkSmY5VLCPM5EVF0xiV01qGTn93+5RExl+Vkxz74472OvKermyV0ImNMuPGimMu++s9Dez2efs9XUDrxZpT8bhz+9J3ReP8nV/Va/oOrL8BbP7ocSx4ci0tHnBZ1mz+/ZiQA4ObRwwAA3/3yCHxh+Gko/M11+MxpA3HNRWejdOLN6BcqEW165PoTr/3x1/4p7t/ywLUjoz5fOvHmuK+jzBMrA62LyDgAzwPIBvCqqk6MWC6h5TcBaAXwfVUtirfN/Px8LSgoSDrgtftqcccr65J+HXnDrJ9chdteXhN12ZAB/dDU8UkPugevH4VnFu/GL64biRlrD+JYS6dtceSddQpKa6NPNv7LGz6LflmCz54zBOV1bXhk9nYs+++xGPv0Mvzfr16AOy8/D8WHGvHNiz+NBduP4Ip/Ogv9s7NwxuD+UNUTN+43lh7Dp4cMxJmn9sepA/phb1UzdhxuxLcu/QyqGtvx9oZy3PrFzyBv6OCkYm/v6kaWCA7WtmDH4UbceMkw9O9nrWxW39qJzu4enD1kYNTl4fGXH2vF4YZ2jLngTLR0BPD+pkqcObg/Nhw4hlGfHoI7Lz8PHYFuLNh+BDdcfA4uemRBUn+H1/TLEgScaiAeYdKdl+GW0Z9J6bUiUqiq+VGXJUroIpINYDeA6wFUANgI4A5V3RG2zk0AfoZgQr8cwPOqenm87aaa0AFg8Y6jKCg9hoq6NizdVYWnbvsCrrpwKLq6e3Dm4P7YVFaPYacNRHaWYO2+Wgw/YxBGnn0qWju7cbSxHXlDB+NgbSsCPT0478xT0D87C8daO9E/Owtd3QqR4Jemu0cx6tND0BHogQCobelEZ6AHbV0BnH/WYLR1dmNAvyzUtXbhU4P6Ydhpg1DX0olTBmSjqrEDANDQ1oWc7CxcMHQw9lQ14ZxPDcSg/tmoa+3C6YNy0BnowYCcLAzol4391c3oUWD4GcHt9MsWDOyXja7uHmRlCYoPNWL46cEv4sCcbAw9dQD2VTcjd8gADMzJRv/sLIgAAsG2yga8vaEM3/js2RhxxiCs3V+L9q5uCAQiwLGWTpx+Sg5aOgLIzsrC2UMGoLq5A0t3VuHcM0/B6OGnIadfFlSB0wblYPfRJuRkC84Y3B8HqlvQL1tQUFqHu688H9d//hwMGdgPA3OykSVAc0cAg/v3Qxbrx4hsl25CvxLA46p6Q+jxQwCgqk+FrfMXAMtU9e3Q410Axqrq4VjbTSehExH1VfESupXrtOEAysMeV4SeS3YdiMh4ESkQkYLq6moLuyYiIqusJPRo182RxXor60BVp6pqvqrm5+bmWomPiIgsspLQKwCcG/Z4BIBDKaxDREQOspLQNwIYKSIXiEh/AN8DMCdinTkA7pagKwA0xKs/JyIi+/VLtIKqBkTkpwAWIths8TVVLRaRe0PLpwCYh2ALl70INlu8x7mQiYgomoQJHQBUdR6CSTv8uSlhvyuA++0NjYiIksGeokREPsGETkTkE5a6/juyY5FqAAdTfPlQADU2huMnfG9i43sTHd+X2Lz43pyvqlHbfbuW0NMhIgWxekr1dXxvYuN7Ex3fl9hMe29Y5UJE5BNM6EREPmFqQp/qdgAexvcmNr430fF9ic2o98bIOnQiIjqZqSV0IiKKwIROROQTxiV0ERknIrtEZK+ITHA7Hq8QkddEpEpEtrsdi5eIyLkislRESkSkWEQecDsmrxCRgSKyQUS2hN6b37odk5eISLaIbBKRD92OxSqjEnpoOryXANwI4PMA7hCRz7sblWdMBzDO7SA8KADgQVX9HIArANzPY+aEDgDXqOqlAL4IYFxotFQKegBAidtBJMOohA5gDIC9qrpfVTsBzARwq8sxeYKqrgBwzO04vEZVDx+fsFxVmxD8gp40m1ZfpEHNoYc5oR+2kgAgIiMA3AzgVbdjSYZpCd3SVHdE0YhIHoDLAKx3ORTPCFUrbAZQBWCxqvK9CXoOwP8D0ONyHEkxLaFbmuqOKJKInArgPQC/UNVGt+PxClXtVtUvIjjL2BgRucTlkFwnIrcAqFLVQrdjSZZpCZ1T3VHSRCQHwWT+N1Wd5XY8XqSq9QCWgfdhAOBqAN8SkVIEq3WvEZG/uhuSNaYldCvT4RGdICICYBqAElV91u14vEREckXk9NDvgwBcB2Cnq0F5gKo+pKojVDUPwRyzRFX/w+WwLDEqoatqAMDx6fBKALyrqsXuRuUNIvI2gLUAPisiFSLyQ7dj8oirAdyFYClrc+jnJreD8ohhAJaKyFYEC0uLVdWYJnp0Mnb9JyLyCaNK6EREFBsTOhGRTzChExH5BBM6EZFPMKETEWVAsgPoici/iciO0MBpb1l6DVu5EBE5T0S+BqAZwAxVjdsjV0RGAngXwcHT6kTkbFWtSrQPltCJiDIg2gB6InKhiCwQkUIRWSkiF4UW/QjAS6paF3ptwmQOMKETEblpKoCfqeqXAfw3gJdDz48CMEpEVovIOhGxNCRDP4eCJCKiOEIDxl0F4O/BESoAAANC//cDMBLAWATHrFopIpeExtyJiQmdiMgdWQDqQ6NdRqoAsE5VuwAcEJFdCCb4jYk2SEREGRYaxvmAiHwXCA4kJyKXhhbPBvCN0PNDEayC2Z9om0zoREQZEGMAvX8H8EMR2QKgGJ/MwLYQQK2I7ACwFMAvVbU24T7YbJGIyB9YQici8gkmdCIin2BCJyLyCSZ0IiKfYEInIvIJJnQiIp9gQici8on/D81IylGx7n1TAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 客户1\n",
    "cus_1 = train[train['id'] == 1]\n",
    "cus_1['target'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "1e68d33a",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 客户498\n",
    "cus_498 = train[train['id'] == 498]\n",
    "cus_498['target'].plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e2d4455",
   "metadata": {},
   "source": [
    "# 任务2：时序周期性分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "e5150e6e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pearson相关系数：\n",
      "date          -0.008353\n",
      "id            -0.011420\n",
      "type           0.008694\n",
      "temperature   -0.009204\n",
      "target         1.000000\n",
      "Name: target, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "pearson_corr = train.corr(method='pearson')\n",
    "print(\"Pearson相关系数：\")\n",
    "print(pearson_corr['target'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "983b7f96",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|█████████████████████████████████████████████████████████████████████| 4312358/4312358 [01:23<00:00, 51914.84it/s]\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>id</th>\n",
       "      <th>type</th>\n",
       "      <th>temperature</th>\n",
       "      <th>target</th>\n",
       "      <th>year</th>\n",
       "      <th>month</th>\n",
       "      <th>day</th>\n",
       "      <th>new_date</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.31</td>\n",
       "      <td>0.039</td>\n",
       "      <td>2019</td>\n",
       "      <td>01</td>\n",
       "      <td>01</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>10.35</td>\n",
       "      <td>0.384</td>\n",
       "      <td>2019</td>\n",
       "      <td>01</td>\n",
       "      <td>01</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1.65</td>\n",
       "      <td>0.986</td>\n",
       "      <td>2019</td>\n",
       "      <td>01</td>\n",
       "      <td>01</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1.70</td>\n",
       "      <td>0.706</td>\n",
       "      <td>2019</td>\n",
       "      <td>01</td>\n",
       "      <td>01</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019010100</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>11.53</td>\n",
       "      <td>0.304</td>\n",
       "      <td>2019</td>\n",
       "      <td>01</td>\n",
       "      <td>01</td>\n",
       "      <td>2019-01-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312353</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>494</td>\n",
       "      <td>0</td>\n",
       "      <td>9.52</td>\n",
       "      <td>1.800</td>\n",
       "      <td>2019</td>\n",
       "      <td>12</td>\n",
       "      <td>26</td>\n",
       "      <td>2019-12-26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312354</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>495</td>\n",
       "      <td>0</td>\n",
       "      <td>7.12</td>\n",
       "      <td>0.038</td>\n",
       "      <td>2019</td>\n",
       "      <td>12</td>\n",
       "      <td>26</td>\n",
       "      <td>2019-12-26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312355</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>496</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.322</td>\n",
       "      <td>2019</td>\n",
       "      <td>12</td>\n",
       "      <td>26</td>\n",
       "      <td>2019-12-26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312356</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>497</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.409</td>\n",
       "      <td>2019</td>\n",
       "      <td>12</td>\n",
       "      <td>26</td>\n",
       "      <td>2019-12-26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4312357</th>\n",
       "      <td>2019122623</td>\n",
       "      <td>498</td>\n",
       "      <td>44</td>\n",
       "      <td>8.08</td>\n",
       "      <td>0.469</td>\n",
       "      <td>2019</td>\n",
       "      <td>12</td>\n",
       "      <td>26</td>\n",
       "      <td>2019-12-26</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>4312358 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "               date   id  type  temperature  target  year month day  \\\n",
       "0        2019010100    0     0        10.31   0.039  2019    01  01   \n",
       "1        2019010100    1     0        10.35   0.384  2019    01  01   \n",
       "2        2019010100    2     1         1.65   0.986  2019    01  01   \n",
       "3        2019010100    3     0         1.70   0.706  2019    01  01   \n",
       "4        2019010100    4     0        11.53   0.304  2019    01  01   \n",
       "...             ...  ...   ...          ...     ...   ...   ...  ..   \n",
       "4312353  2019122623  494     0         9.52   1.800  2019    12  26   \n",
       "4312354  2019122623  495     0         7.12   0.038  2019    12  26   \n",
       "4312355  2019122623  496    44         8.08   0.322  2019    12  26   \n",
       "4312356  2019122623  497    44         8.08   0.409  2019    12  26   \n",
       "4312357  2019122623  498    44         8.08   0.469  2019    12  26   \n",
       "\n",
       "           new_date  \n",
       "0        2019-01-01  \n",
       "1        2019-01-01  \n",
       "2        2019-01-01  \n",
       "3        2019-01-01  \n",
       "4        2019-01-01  \n",
       "...             ...  \n",
       "4312353  2019-12-26  \n",
       "4312354  2019-12-26  \n",
       "4312355  2019-12-26  \n",
       "4312356  2019-12-26  \n",
       "4312357  2019-12-26  \n",
       "\n",
       "[4312358 rows x 9 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def to_date(y, m, d):\n",
    "    return str(y) + str(m) + str(d)\n",
    "\n",
    "y_list = []\n",
    "m_list = []\n",
    "d_list = []\n",
    "date_list = []\n",
    "for idx, row in tqdm(train.iterrows(), total=len(train)):\n",
    "    \n",
    "    y = str(row['date'])[:4]\n",
    "    m = str(row['date'])[4:6]\n",
    "    d = str(row['date'])[6:8]\n",
    "    date = y + '-' + m + '-' + d\n",
    "    \n",
    "    y_list.append(y)\n",
    "    m_list.append(m)\n",
    "    d_list.append(d)\n",
    "    date_list.append(date)\n",
    "\n",
    "    \n",
    "# 转换年月日\n",
    "train['year'] = y_list\n",
    "train['month'] = m_list\n",
    "train['day'] = d_list\n",
    "train['new_date'] = date_list\n",
    "\n",
    "train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b49faadc",
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "cannot perform reduce with flexible type",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "Input \u001b[1;32mIn [17]\u001b[0m, in \u001b[0;36m<cell line: 1>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcorrcoef\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mday\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtolist\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mtarget\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtolist\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m      2\u001b[0m r\n",
      "File \u001b[1;32m<__array_function__ internals>:5\u001b[0m, in \u001b[0;36mcorrcoef\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "File \u001b[1;32mE:\\env\\Anaconda\\lib\\site-packages\\numpy\\lib\\function_base.py:2683\u001b[0m, in \u001b[0;36mcorrcoef\u001b[1;34m(x, y, rowvar, bias, ddof, dtype)\u001b[0m\n\u001b[0;32m   2679\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bias \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np\u001b[38;5;241m.\u001b[39m_NoValue \u001b[38;5;129;01mor\u001b[39;00m ddof \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np\u001b[38;5;241m.\u001b[39m_NoValue:\n\u001b[0;32m   2680\u001b[0m     \u001b[38;5;66;03m# 2015-03-15, 1.10\u001b[39;00m\n\u001b[0;32m   2681\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mwarn(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbias and ddof have no effect and are deprecated\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m   2682\u001b[0m                   \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m, stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m)\n\u001b[1;32m-> 2683\u001b[0m c \u001b[38;5;241m=\u001b[39m \u001b[43mcov\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrowvar\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   2684\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m   2685\u001b[0m     d \u001b[38;5;241m=\u001b[39m diag(c)\n",
      "File \u001b[1;32m<__array_function__ internals>:5\u001b[0m, in \u001b[0;36mcov\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "File \u001b[1;32mE:\\env\\Anaconda\\lib\\site-packages\\numpy\\lib\\function_base.py:2518\u001b[0m, in \u001b[0;36mcov\u001b[1;34m(m, y, rowvar, bias, ddof, fweights, aweights, dtype)\u001b[0m\n\u001b[0;32m   2515\u001b[0m     \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m   2516\u001b[0m         w \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m=\u001b[39m aweights\n\u001b[1;32m-> 2518\u001b[0m avg, w_sum \u001b[38;5;241m=\u001b[39m \u001b[43maverage\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweights\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreturned\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m   2519\u001b[0m w_sum \u001b[38;5;241m=\u001b[39m w_sum[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m   2521\u001b[0m \u001b[38;5;66;03m# Determine the normalization\u001b[39;00m\n",
      "File \u001b[1;32m<__array_function__ internals>:5\u001b[0m, in \u001b[0;36maverage\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "File \u001b[1;32mE:\\env\\Anaconda\\lib\\site-packages\\numpy\\lib\\function_base.py:380\u001b[0m, in \u001b[0;36maverage\u001b[1;34m(a, axis, weights, returned)\u001b[0m\n\u001b[0;32m    377\u001b[0m a \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39masanyarray(a)\n\u001b[0;32m    379\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m weights \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 380\u001b[0m     avg \u001b[38;5;241m=\u001b[39m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmean\u001b[49m\u001b[43m(\u001b[49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    381\u001b[0m     scl \u001b[38;5;241m=\u001b[39m avg\u001b[38;5;241m.\u001b[39mdtype\u001b[38;5;241m.\u001b[39mtype(a\u001b[38;5;241m.\u001b[39msize\u001b[38;5;241m/\u001b[39mavg\u001b[38;5;241m.\u001b[39msize)\n\u001b[0;32m    382\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
      "File \u001b[1;32mE:\\env\\Anaconda\\lib\\site-packages\\numpy\\core\\_methods.py:179\u001b[0m, in \u001b[0;36m_mean\u001b[1;34m(a, axis, dtype, out, keepdims, where)\u001b[0m\n\u001b[0;32m    176\u001b[0m         dtype \u001b[38;5;241m=\u001b[39m mu\u001b[38;5;241m.\u001b[39mdtype(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mf4\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m    177\u001b[0m         is_float16_result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m--> 179\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mumr_sum\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwhere\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mwhere\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    180\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(ret, mu\u001b[38;5;241m.\u001b[39mndarray):\n\u001b[0;32m    181\u001b[0m     ret \u001b[38;5;241m=\u001b[39m um\u001b[38;5;241m.\u001b[39mtrue_divide(\n\u001b[0;32m    182\u001b[0m             ret, rcount, out\u001b[38;5;241m=\u001b[39mret, casting\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124munsafe\u001b[39m\u001b[38;5;124m'\u001b[39m, subok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n",
      "\u001b[1;31mTypeError\u001b[0m: cannot perform reduce with flexible type"
     ]
    }
   ],
   "source": [
    "r = np.corrcoef(train['day'].tolist(), train['target'].tolist())\n",
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0ab93f0f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\env\\Anaconda\\lib\\site-packages\\scipy\\stats\\_stats_py.py:5283: RuntimeWarning: overflow encountered in longlong_scalars\n",
      "  (2 * xtie * ytie) / m + x0 * y0 / (9 * m * (size - 2)))\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>id</th>\n",
       "      <th>type</th>\n",
       "      <th>temperature</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.210589</td>\n",
       "      <td>-0.001100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>id</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.237333</td>\n",
       "      <td>0.005707</td>\n",
       "      <td>0.010492</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>type</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.237333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.030510</td>\n",
       "      <td>0.109472</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>temperature</th>\n",
       "      <td>0.210589</td>\n",
       "      <td>0.005707</td>\n",
       "      <td>0.030510</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.032618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>target</th>\n",
       "      <td>-0.001100</td>\n",
       "      <td>0.010492</td>\n",
       "      <td>0.109472</td>\n",
       "      <td>0.032618</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 date        id      type  temperature    target\n",
       "date         1.000000  0.000000  0.000000     0.210589 -0.001100\n",
       "id           0.000000  1.000000  0.237333     0.005707  0.010492\n",
       "type         0.000000  0.237333  1.000000     0.030510  0.109472\n",
       "temperature  0.210589  0.005707  0.030510     1.000000  0.032618\n",
       "target      -0.001100  0.010492  0.109472     0.032618  1.000000"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kendall_corr = train.corr(method='kendall')\n",
    "kendall_corr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "efd462d0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
